package com.ticket.system.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.data.annotation.Transient;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@ApiModel(description = "下单对象")
public class OrderVo {
    private Long id;
    private String orderId;
    @ApiModelProperty(value = "价格")
    private BigDecimal totalMoney;
    @ApiModelProperty(value = "状态")
    private Integer status;
    @ApiModelProperty(value = "演出")
    private PerformVo performVo;
    @ApiModelProperty(value = "场次")
    private SessionVo sessionVo;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "最晚支付时间", dataType = "date")
    private Date expireTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建订单时间", dataType = "date")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "关闭时间", dataType = "date")
    private Date cancelTime;
    @ApiModelProperty(value = "订单详情")
    private List<OrderDetailVo> orderDetailVos;
    @ApiModelProperty(value = "用户编码")
    private Long userId;
    @ApiModelProperty(value = "剧院名称")
    private String deptName;
    @ApiModelProperty(value = "剧院LOGO图标路径")
    private String operaLogo;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "支付订单时间", dataType = "date")
    private Date payTime;
    @ApiModelProperty(value = "支付订单单号", dataType = "string")
    private String prePayId;
    @ApiModelProperty(value = "创建订单用户姓名", dataType = "string")
    private String createUserName;
    @ApiModelProperty(value = "创建订单用户联系方式", dataType = "string")
    private String createUserContactNumber;
    @ApiModelProperty(value = "创建订单用户证件类型 ，0:未知，1：身份证，2：护照 ", dataType = "int")
    private Integer createUserIdType;
    @ApiModelProperty(value = "创建订单用户证件号码", dataType = "string")
    private String createUserIdNumber;
    @ApiModelProperty(value = "联系人姓名", dataType = "int")
    private String contacts;
    @ApiModelProperty(value = "（联系人）联系方式（电话）", dataType = "string")
    private String contactNumber;

    private Integer authType;

    private Integer countTicket;
    @Transient
    private String openId;
    @ApiModelProperty(value = "余额支付金额")
    private BigDecimal balanceAmt;
    @ApiModelProperty(value = "观演卡支付金额")
    private BigDecimal cardAmt;
    @ApiModelProperty(value = "微信卡支付金额")
    private BigDecimal wechatAmt;

    @ApiModelProperty(value = "购票类型 1小程序购票 2后台出票", dataType = "string")
    private Integer ticketType;
    @ApiModelProperty(value = "出票类型1团购票 2工作票3赠票 4其他", dataType = "string")
    private Integer ticketWay;

    @ApiModelProperty(value = "其他出票类型", dataType = "string")
    private String ticketWayName;
    @ApiModelProperty(value = "出票方式 1电子票", dataType = "string")
    private Integer ticketOutWay;
    @ApiModelProperty(value = "优惠政策1不使用优惠 2自定义价格 3自定义折扣", dataType = "string")
    private Integer discountType;
    @ApiModelProperty(value = "备注", dataType = "string")
    private String ticketDemo;
    @ApiModelProperty(value = "折扣/价格")
    private BigDecimal discountPer;
    @ApiModelProperty(value = "减免金额")
    private BigDecimal discountAmt;
    @ApiModelProperty(value = "支付方式 1对公转账2抖音支付 3微信支付 4现金 5其他")
    private Integer payWay;
    @ApiModelProperty(value = "出票付款 1已付款 2欠款", dataType = "string")
    private Integer ticketStatus;

    @ApiModelProperty(value = "付款备注", dataType = "string")
    private String payDemo;
    @ApiModelProperty(value = "其他付款名称")
    private String payName;

    @ApiModelProperty(value = "应付金额")
    private BigDecimal yingfuMoney;

    @ApiModelProperty(value = "评价id")
    private Long evaluateId;

    public BigDecimal getYingfuMoney() {
        return yingfuMoney;
    }

    public void setYingfuMoney(BigDecimal yingfuMoney) {
        this.yingfuMoney = yingfuMoney;
    }

    public String getPayName() {
        return payName;
    }

    public void setPayName(String payName) {
        this.payName = payName;
    }
    public Integer getTicketStatus() {
        return ticketStatus;
    }

    public void setTicketStatus(Integer ticketStatus) {
        this.ticketStatus = ticketStatus;
    }
    public BigDecimal getDiscountAmt() {
        return discountAmt;
    }

    public void setDiscountAmt(BigDecimal discountAmt) {
        this.discountAmt = discountAmt;
    }
    public Integer getTicketType() {
        return ticketType;
    }

    public void setTicketType(Integer ticketType) {
        this.ticketType = ticketType;
    }

    public Integer getTicketWay() {
        return ticketWay;
    }

    public void setTicketWay(Integer ticketWay) {
        this.ticketWay = ticketWay;
    }

    public Integer getTicketOutWay() {
        return ticketOutWay;
    }

    public void setTicketOutWay(Integer ticketOutWay) {
        this.ticketOutWay = ticketOutWay;
    }

    public Integer getDiscountType() {
        return discountType;
    }

    public void setDiscountType(Integer discountType) {
        this.discountType = discountType;
    }

    public String getTicketDemo() {
        return ticketDemo;
    }

    public void setTicketDemo(String ticketDemo) {
        this.ticketDemo = ticketDemo;
    }

    public BigDecimal getDiscountPer() {
        return discountPer;
    }

    public void setDiscountPer(BigDecimal discountPer) {
        this.discountPer = discountPer;
    }

    public Integer getPayWay() {
        return payWay;
    }

    public void setPayWay(Integer payWay) {
        this.payWay = payWay;
    }

    public BigDecimal getBalanceAmt() {
        return balanceAmt;
    }

    public void setBalanceAmt(BigDecimal balanceAmt) {
        this.balanceAmt = balanceAmt;
    }

    public BigDecimal getCardAmt() {
        return cardAmt;
    }

    public void setCardAmt(BigDecimal cardAmt) {
        this.cardAmt = cardAmt;
    }

    public BigDecimal getWechatAmt() {
        return wechatAmt;
    }

    public void setWechatAmt(BigDecimal wechatAmt) {
        this.wechatAmt = wechatAmt;
    }

    public String getOpenId() {
        return openId;
    }

    public void setOpenId(String openId) {
        this.openId = openId;
    }
    public Integer getCountTicket() {
        return countTicket;
    }

    public void setCountTicket(Integer countTicket) {
        this.countTicket = countTicket;
    }


    public Integer getAuthType() {
        return authType;
    }

    public void setAuthType(Integer authType) {
        this.authType = authType;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public BigDecimal getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(BigDecimal totalMoney) {
        this.totalMoney = totalMoney;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public PerformVo getPerformVo() {
        return performVo;
    }

    public void setPerformVo(PerformVo performVo) {
        this.performVo = performVo;
    }

    public SessionVo getSessionVo() {
        return sessionVo;
    }

    public void setSessionVo(SessionVo sessionVo) {
        this.sessionVo = sessionVo;
    }

    public Date getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(Date expireTime) {
        this.expireTime = expireTime;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public List<OrderDetailVo> getOrderDetailVos() {
        return orderDetailVos;
    }

    public void setOrderDetailVos(List<OrderDetailVo> orderDetailVos) {
        this.orderDetailVos = orderDetailVos;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getOperaLogo() {
        return operaLogo;
    }

    public void setOperaLogo(String operaLogo) {
        this.operaLogo = operaLogo;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public String getPrePayId() {
        return prePayId;
    }

    public void setPrePayId(String prePayId) {
        this.prePayId = prePayId;
    }

    public String getCreateUserName() {
        return createUserName;
    }

    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }

    public String getCreateUserContactNumber() {
        return createUserContactNumber;
    }

    public void setCreateUserContactNumber(String createUserContactNumber) {
        this.createUserContactNumber = createUserContactNumber;
    }

    public Integer getCreateUserIdType() {
        return createUserIdType;
    }

    public void setCreateUserIdType(Integer createUserIdType) {
        this.createUserIdType = createUserIdType;
    }

    public String getCreateUserIdNumber() {
        return createUserIdNumber;
    }

    public void setCreateUserIdNumber(String createUserIdNumber) {
        this.createUserIdNumber = createUserIdNumber;
    }

    public String getContacts() {
        return contacts;
    }

    public void setContacts(String contacts) {
        this.contacts = contacts;
    }

    public String getContactNumber() {
        return contactNumber;
    }

    public void setContactNumber(String contactNumber) {
        this.contactNumber = contactNumber;
    }

    public Date getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    public String getPayDemo() {
        return payDemo;
    }

    public void setPayDemo(String payDemo) {
        this.payDemo = payDemo;
    }

    public String getTicketWayName() {
        return ticketWayName;
    }

    public void setTicketWayName(String ticketWayName) {
        this.ticketWayName = ticketWayName;
    }

    public Long getEvaluateId() {
        return evaluateId;
    }

    public void setEvaluateId(Long evaluateId) {
        this.evaluateId = evaluateId;
    }
}
